package net.ulrice.mdls.sensor;

import java.util.List;

import net.ulrice.mdls.sensor.facade.CpuInfo;
import net.ulrice.mdls.sensor.facade.CpuLoad;
import net.ulrice.mdls.sensor.facade.MemoryInfo;
import net.ulrice.mdls.sensor.facade.NetworkInfo;

/**
 * Interface for a cpu sensor.
 * 
 * @author christof
 */
public interface Sensor {

	/**
	 * Returns information about the cpu and the cores
	 */
	List<CpuInfo> getCpuInfo();

	/**
	 * Returns the number of available cores.
	 */
	int getNumCores();

	/**
	 * Returns the current cpu load.
	 */
	List<CpuLoad> getCpuLoad() throws SensorException;

	/**
	 * Returns the information for all network interfaces.
	 */
	List<NetworkInfo> getNetworkInfo() throws SensorException;

	/**
	 * Returns memory information.
	 */
	MemoryInfo getMemoryInfo() throws SensorException;		
}
